home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / libs / anivga12 / example6.pas < prev    next >
Pascal/Delphi Source File  |  1993-07-11  |  4KB  |  112 lines

  1. {$A+,B-,D+,L+,N-,E-,O-,R-,S-,V-,G-,F-,I-,X-}
  2. {$M 16384,0,655360}
  3. PROGRAM Example6;
  4.  
  5. {Another example how to use an image as a scrolling background; this time, }
  6. {a 8x4 tile image will be used, but pasted to the same area as in the pre- }
  7. {vious example!}
  8. {Just for the case that you are bored, this example also shows how to "tie"}
  9. {output of OutTextXY() and sprites to an absolute screen position (in      }
  10. {scrolling mode, of course, because otherwise it would be trivial)...      }
  11. {This time, a loadable font is used: FIRE.FNT. This is a colored font, so  }
  12. {a palette FIRE.PAL will be loaded and activated previously.               }
  13. {Make sure that the program can find all these files!!!                    }
  14.  
  15. {$X+} {to ignore results of functions}
  16. USES ANIVGA,CRT;
  17. CONST TileName1='BLACK.COD';     {1 black tile}
  18.       TileName2='MARMOR.COD';    {32 tiles, captured from Win3.1 }
  19.       tiles_per_row=8;           {These are the proportions of   }
  20.       tiles_per_column=4;        {the above 4 tile file: 2x2!    }
  21.       SpriteName='FLOWER.COD';   {You know that one by now...    }
  22.       FontName='FIRE.FNT';       {Name of the (multicolored) font}
  23.       FontPal ='FIRE.PAL';       {According palette for the font }
  24.       FlowerLoadNumber=1;        {load number for sprite}
  25.       Flower1=0;                 {sprite number}
  26.       Flower2=1;                 {another one  }
  27.       ch:Char=#0;
  28.  
  29. PROCEDURE Init;
  30. BEGIN
  31.  XTiles:=0; YTiles:=0;
  32.  SetBackgroundMode(scrolling);
  33.  SetBackgroundScrollRange(50,50,300,100);
  34.  
  35.  {paste tiles into this background, using circular enumeration}
  36.  MakeTileArea(1,tiles_per_row,tiles_per_column);
  37.  
  38.  {load sprite:}
  39.  IF loadSprite(SpriteName,FlowerLoadNumber)=0
  40.   THEN BEGIN
  41.         WRITELN('Couldn''t access file '+SpriteName+' : '+GetErrorMessage);
  42.         halt(1)
  43.        END;
  44. END;
  45.  
  46. PROCEDURE CheckFileErr(name:STRING);
  47. { in: Error = error value}
  48. {     name  = file to deal with}
  49. {out: If there was an error with the file, the program stops in a clean way}
  50. BEGIN
  51.  IF Error<>Err_None
  52.   THEN BEGIN
  53.         CloseRoutines;
  54.         WRITELN('Couldn''t access file '+name+' : '+GetErrorMessage);
  55.         halt(1)
  56.        END;
  57. END;
  58.  
  59. BEGIN
  60.  Init;
  61.  InitGraph;
  62.  LoadFont(FontName); CheckFileErr(FontName);
  63.  LoadPalette(FontPal,0,actualColors); CheckFileErr(FontPal);
  64.  SetPalette(actualColors,TRUE);
  65.  LoadTile(TileName1,0); {load the black tile as tile #0 = surrounding pattern}
  66.  CheckFileErr(TileName1);
  67.  LoadTile(TileName2,1); {load the 4 tiles as tile #1..4 = inner picture}
  68.  CheckFileErr(TileName2);
  69.  
  70.  SetCycleTime(0); {animation as fast as possible}
  71.  
  72.  SpriteN[Flower1]:=FlowerLoadNumber;
  73.  SpriteX[Flower1]:=0;
  74.  SpriteY[Flower1]:=0;
  75.  SpriteN[Flower2]:=FlowerLoadNumber;
  76.  SpriteX[Flower2]:=StartVirtualX+100; {tie 2nd flower to absolute position}
  77.  SpriteY[Flower2]:=StartVirtualY+100;
  78.  
  79.  Animate;
  80.  OutTextXY(StartVirtualX+10,StartVirtualY+10,1-PAGE,'This text won''t scroll!');
  81.  {show text the 1st time!}
  82.  REPEAT
  83.   IF Hitdetect(Flower1,Flower2) THEN BEGIN sound(1000); delay(5); nosound END;
  84.   if KeyPressed
  85.    THEN BEGIN
  86.          WHILE KeyPressed DO ch:=Upcase(ReadKey);
  87.          CASE ch OF
  88.           'I':dec(SpriteY[Flower1]);  {change position of sprite with I,J,K,M}
  89.           'J':dec(SpriteX[Flower1]);
  90.           'K':inc(SpriteX[Flower1]);
  91.           'M':inc(SpriteY[Flower1]);
  92.           'E':dec(StartVirtualY,10);  {change position of whole scene with}
  93.           'S':dec(StartVirtualX,10);  {E,S,D,X}
  94.           'D':inc(StartVirtualX,10);
  95.           'X':inc(StartVirtualY,10);
  96.          END;
  97.          IF POS(ch,'IJKMESDX')>0
  98.           THEN BEGIN {=only if something changed}
  99.                 SpriteX[Flower2]:=StartVirtualX+100;
  100.                 SpriteY[Flower2]:=StartVirtualY+100;
  101.                 Animate; 
  102.                 OutTextXY(StartVirtualX+10,StartVirtualY+10,1-PAGE,
  103.                           'This text won''t scroll!')
  104.                END
  105.         END;
  106.  
  107.  UNTIL (ch='Q') OR (ch=#27);  {"Q" or ESC to quit}
  108.  
  109.  CloseRoutines;
  110.  
  111. END.
  112.